package com.tangula.web.kashine.business;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;

import com.tangula.web.form.DefaultPagingBody;
import com.tangula.web.kashine.entity.AccountEntity;
import com.tangula.web.kashine.entity.AwardEntity;
import com.tangula.web.kashine.entity.ClassStudentRefEntity;
import com.tangula.web.kashine.entity.FreeTeacherModule;
import com.tangula.web.kashine.entity.LoadOrgTeacherForm;
import com.tangula.web.kashine.entity.PagableForm;
import com.tangula.web.kashine.entity.SendMoneyForm;
import com.tangula.web.kashine.entity.TeacherForm;
import com.tangula.web.kashine.entity.TeacherPageableForm;
import com.tangula.web.kashine.entity.TeacherSendMoneyForm;


public interface TeacherBusiness {
	DefaultPagingBody<AccountEntity> loadOrgTeachers(LoadOrgTeacherForm loadOrgTeacherForm);

	AccountEntity register(AccountEntity account);

	Boolean sendMoneyToStudent(SendMoneyForm send) throws BusinessFailException;

	DefaultPagingBody<TeacherSendMoneyForm> showHistory(TeacherPageableForm teacher);

	DefaultPagingBody<AccountEntity> loadTeachers(PagableForm pag);

	List<AccountEntity> showTeacher(PagableForm pag);

	AccountEntity seleteTeacher(TeacherForm teacher);

	AccountEntity blockTeacher(TeacherForm teacher);

	AccountEntity unblockTeacher(TeacherForm teacher);

	AccountEntity orgRegister(AccountEntity account);

	AccountEntity blockOrUnblockTeacher(TeacherForm teacher);

	DefaultPagingBody<FreeTeacherModule> loadFreeTeacher(PagableForm pag);

	boolean block(String id);

	boolean unblock(String id);

	AccountEntity loadTeacher(String id);

	int countByOrgId(String id);

	Page<AwardEntity> loadAllAwards(String id, PageRequest pageRequest);

	boolean createAward(AwardEntity entity);

	Page<AccountEntity> loadOutOfClassStudent(String id, String classId, Pageable pagination);

	boolean putStudent2Class(String studentId, String classId);

	Page<ClassStudentRefEntity> loadClassStudents(String classId, Pageable pageRequestDescId);

	List<ClassStudentRefEntity> loadAllClassMembers(String classId);

	boolean sendAwards2Student(String teacherId, String studentId, List<String> awards);

	Page<AccountEntity> loadAllStudent(String id, Pageable pageRequest);

}
